1. Field of the Invention
The techniques disclosed herein concern user interfaces to computers generally and more specifically interactive user interfaces which employ windows and pointing devices.
2. Description of the Prior Art
The problem of designing appropriate graphical user interfaces to the UNIX.RTM. system is vexing and largely unsolved, even today, ten years after bitmap displays were first attached to UNIX systems. In those ten years, graphical applications have become major subsystems that sidestep or even subvert some of the properties of UNIX that helped make it popular, in particular its piece-parts, tool-based approach to programming. Although there have been some encouraging recent attempts, in particular ConMan, described in Paul Haberli, "ConMan: A Visual Programming Language for Interactive Graphics", Comp. Graph., Vol. 22, #4 August 1988, pp. 103-110, and Tcl, described in John Ousterhout, "Tcl: An Embeddable Command Language", Proc. USENIX Winter 1990 Conf., pp. 133-146, they have taken the form of providing interprocess communication within existing environments, permitting established programs to talk to one another. None has approached the problem structurally. Moreover, they are minor counterexamples to the major trend, which is to differentiate among systems by providing ever larger, fancier, and more monolithic graphics subsystems rather than by increasing the functionality or programmability of the overall system. To the software developer, that trend is problematical; modem user interface toolkits and window systems are as complex as the systems UNIX displaced with its elegant, simple approach.
The system of the invention, termed herein Help is an experimental program that combines aspects of window systems, shells, and editors to provide an improved user interface for textual applications. It is not a `toolkit`; it is a self-contained program, more like a shell than a library, that joins users and applications. From the perspective of the application, it provides a universal communication mechanism, based on familiar UNIX file operations, that permits small applications--even shell procedures--to exploit the graphical user interface of the system and communicate with each other. For the user, the interface is extremely spare, consisting only of text, scroll bars, one simple kind of window, and a unique function for each mouse button--no widgets, no icons, not even pop-up menus. Despite these limitations, help is an effective environment in which to work and, particularly, to program.
Help's roots lie in Wirth's and Gutknecht's Oberon system, described in N. Wirth and J. Gutknecht, "The Oberon System", Software Practice and Experience, September 1989, vol 19, no. 9, pp 857-894 and in Martin Reiser, The Oberon System, Addison Wesley, New York 1991. Oberon is an attempt to extract the salient features of Xerox's Cedar environment, described in W. Teitelman, "A Tour through Cedar", IEEE Software 1, no. 2, pp. 44-73, and implement them in a system of manageable size. It is based on a module language, also called Oberon, and integrates an operating system, editor, window system, and compiler into a uniform environment. Its user interface is especially simple: by using the mouse to point at text on the display, one indicates what subroutine in the system to execute next. In a normal UNIX shell, one types the name of a file to execute; instead in Oberon one selects with a particular button of the mouse a module and subroutine within that module, such as Edit.Open to open a file for editing. Almost the entire interface follows from this simple idea.
A major difficulty with the Oberon system is that it has a single process and is language oriented. Modern computing systems are typically multi-process systems and are file oriented instead of language oriented. It is thus an object of the invention to secure the advantages of Oberon's user interface in such multi-process and file-oriented computing systems.